import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import { resolve } from 'path'

// https://vite.dev/config/
export default defineConfig({
  base: './',
  plugins: [vue()],
  resolve: {
    alias: {
      '@': resolve(__dirname, 'src')
    }
  },
  server: {
    port: 8081,
    proxy: {
      '/api': {
        target: 'http://127.0.0.1:5000',
        changeOrigin: true,
        secure: false,  // 如果是https且证书有问题，设置为false
        // rewrite: path => path.replace(/^\/api/, '')  // 保留/api前缀，因为后端需要
      }
    }
  },
  build: {
    // 清除console和debugger
    terserOptions: {
      compress: {
        drop_console: false, // 保留console以便调试
        drop_debugger: true,
      },
    },
    rollupOptions: {
      output: {
        //配置这个是让不同类型文件放在不同文件夹，不会显得太乱
        chunkFileNames: 'static/js/[name]-[hash].js',
        entryFileNames: 'static/js/[name]-[hash].js',
        assetFileNames: 'static/[ext]/[name]-[hash].[ext]',
        manualChunks(id) {
          //静态资源分拆打包
          if (id.includes('node_modules')) {
            return id.toString().split('node_modules/')[1].split('/')[0].toString();
          }
        },
      },
    },
    target: 'es2015', // 降低输出的JavaScript版本以提高兼容性
    outDir: 'dist', // 指定输出路径
    assetsDir: 'static', // 将静态资源放在static目录下
    assetsInlineLimit: 4096, // 小于此阈值的导入或引用资源将内联为 base64 编码 (数字类型，无需引号)
    chunkSizeWarningLimit: 500, // chunk 大小警告的限制
    minify: 'terser', // 混淆器，terser构建后文件体积更小
    emptyOutDir: true, //打包前先清空原有打包文件
  },
})
